package com.springcloud.sc.ucpv5.client.application.message.type;

import java.nio.ByteBuffer;

/**
 * 与接口字段类型无关的公用函数
 * 
 * 
 */
public abstract class WrapPublic {
    /**
     * 根据配置来确定并分配接口字段占用内存
     * 
     * @param key
     *            包含所有该类型所需的属性条件
     * @return
     */
    @SuppressWarnings("unused")
    protected static ByteBuffer allocTempBuffer(int length) {
	// 得到占用字节长度属性值
	// int length = Integer.parseInt(key.getAttribute("length"));
	ByteBuffer tempBuffer = ByteBuffer.allocate(length);
	return tempBuffer;
    }

    /**
     * 解包时，如果接口字段占用缓存字节数大于接口字段的类型长度，则需抛弃多余的字节
     * 
     * @param buffer
     * @param key
     *            包含所有该类型所需的属性条件
     * @param len
     *            该数字类型的Java语法长度
     * @return
     */
    @SuppressWarnings("unused")
    protected static void unpackKeyByRestLength(ByteBuffer buffer, int length, int len) {
	// 得到占用字节长度属性值
	// int length = Integer.parseInt(key.getAttribute("length"));
	// 接口字段占用缓存字节数减去接口字段的类型长度的剩余长度，即多余字节数
	int restLength = length - len;
	// 有多余字节时，抛弃多余的字节
	if (restLength > 0) {
	    buffer.position(buffer.position() + restLength);
	} else if (restLength < 0) {
	    return;
	}
    }

}
